home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / ExtraLib / include / rhosigma / settings.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-05-01  |  5.7 KB  |  141 lines

  1. /* ___________________________________________________________________________
  2. ** |*************************************************************************|
  3. ** |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
  4. ** |*| Set TAB to 4 for best readable file layout.  |*|  C++ MaxonDev 4.0  |*|
  5. ** |*|______________________________________________|*|____________________|*|
  6. ** |*************************************************************************|
  7. ** |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
  8. ** |*|               |*|  $Id: settings.h (28.04.01)                       |*|
  9. ** |*| ###### ###### |*|  RhoSigma Source based on NDK 3.1 Includes 40.15  |*|
  10. ** |*| ##  ## ##   # |*| _________________________________________________ |*|
  11. ** |*| ##  ##  ##    |*|                                                   |*|
  12. ** |*| ######   ##   |*|  Useful defines and extensions for NDK includes   |*|
  13. ** |*| ##      ##    |*|                                                   |*|
  14. ** |*| ##     ##   # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
  15. ** |*| ##     ###### |*|  Copyright © 1998-2001 RhoSigma, Roland Heyder    |*|
  16. ** |*|               |*|  All Rights Reserved.                             |*|
  17. ** |*|_______________|*|___________________________________________________|*|
  18. ** |*************************************************************************|
  19. ** ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  20. */
  21.  
  22. #ifndef    RHOSIGMA_SETTINGS_H
  23. #define    RHOSIGMA_SETTINGS_H
  24.  
  25. #ifndef        EXEC_TYPES_H
  26. #include    <exec/types.h>
  27. #endif
  28.  
  29.     /** enhanced booleans **/
  30.  
  31. #ifndef    UPPER            /* Signum-Werte zur Verwendung in */
  32. #define    UPPER    1L        /* Variablen des Typs BOOL        */
  33. #endif
  34. #ifndef    EQUAL
  35. #define    EQUAL    0L
  36. #endif
  37. #ifndef    LOWER
  38. #define    LOWER    -1L
  39. #endif
  40.  
  41.     /** intuition **/
  42.  
  43. #define DATPOS_C -1        /* Text zentrieren   */
  44. #define DATPOS_L -2        /* Text linksbündig  */
  45. #define DATPOS_R -3        /* Text rechtsbündig */
  46.  
  47. /*** rhosigma / DATEXT() ***
  48. *»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  49. * Dieses Macro erstellt einen Teilstring des Parameterstrings der Intuition-
  50. * Routine »DisplayAlert()«. Wahlweise kann der Text automatisch zentriert,
  51. * oder links- bzw. rechtsbündig ausgerichtet werden.
  52. *-----------------------------------------------------------------------------
  53. * Definiert:    settings.h  (Copyright © 1998-2001 RhoSigma, Roland Heyder)
  54. *
  55. * Schablone:    Name/A, xPos/A/N, yPos/A/N, String/A, EndFlag/N/S
  56. *
  57. * Parameter:    Name    --> ein beliebiger Name als ID für diesen Teilstring
  58. *
  59. *                xPos    --> x-Position des Textes,
  60. *                                oder einer der oben definierten DATPOS-Werte.
  61. *
  62. *                yPos    --> y-Position des Textes,
  63. *                                Ausrichtung nach BaseLine des Fonts (topaz/8)
  64. *
  65. *                String    --> der Text selbst aber ohne ("") Anführungszeichen
  66. *
  67. *                EndFlag    --> - TRUE , dann endet hier der Parameterstring
  68. *                            - FALSE, dann MUSS noch ein weiterer Teilstring
  69. *                                     (Macro-Aufruf) folgen.
  70. *
  71. * Bemerkung:    Leider gestattet der Macro-Aufbau sowie die Initialisierungs-
  72. *                Regeln in C/C++ und dazu noch die Macken einiger Compiler keinen
  73. *                vollständigen Aufbau des Parameterstrings (Ja, ich hasse C !!).
  74. *                Aus diesem Grunde ist es in C/C++ erforderlich, die einzelnen
  75. *                Teilstrings vor der Benutzung noch mittels der ebenfalls hier
  76. *                deklarierten Funktion »DAJOIN()« abschließend vorzubereiten.
  77. *
  78. *                Ein Beispiel für die Benutzung dieses Macros finden Sie in
  79. *                der Datei »demo/AlertDemo.C«.
  80. *
  81. *   ACHTUNG:    Die einzelnen Teilstrings, die später zu einem Parameterstring
  82. *   ¯¯¯¯¯¯¯¯    gehören, müssen auf JEDEN FALL direkt nacheinander deklariert
  83. *                werden, während zwischen zwei kompletten Parameterstrings aber
  84. *                durchaus auch andere Deklarationen gemacht werden können.
  85. *
  86. * Siehe auch:    »DAJOIN()«
  87. *«««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««*/
  88.  
  89. #define DATEXT(Name, xPos, yPos, String, EndFlag)                    \
  90. typedef struct {                                                    \
  91.     WORD    da_PosX;                                                \
  92.     UBYTE    da_PosY;                                                \
  93.     TEXT    da_Text[sizeof(#String)+(3-((sizeof(#String)-1)&3))];    \
  94.     UBYTE    da_Cont;                                                \
  95. } datext_##Name;                                                    \
  96. STATIC datext_##Name Name = {xPos,yPos,#String,!EndFlag};
  97.  
  98. /*** rhosigma / DAJOIN() ***
  99. *»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
  100. * Diese Funktion dient der abschließenden Vorbereitung der mittels »DATEXT()«
  101. * initialisierten Teilstrings zur Verwendung mit »DisplayAlert()«. Idealer Weise
  102. * sollte man diese Funktion als erste innerhalb der Main-Funktion aufrufen.
  103. *  Hier wird jetzt jedoch nur der Prototyp dieser Funktion deklariert, die ei-
  104. * gentliche Funktion ist Bestandteil der mitgelieferten »rhosigma.c« Source und
  105. * sollte in Ihr Projekt eingebunden werden.
  106. *-----------------------------------------------------------------------------
  107. * Synopsis:        VOID DAJOIN (Count, ...)
  108. *
  109. * Eingaben:        Count    -->    (UWORD)  Anzahl der übergebenen Teilstrings
  110. *
  111. *                ...        --> (&ID) nacheinander die Adressen (Referenzen) der
  112. *                                  einzelnen Teilstrings
  113. *
  114. * Bemerkung:    Mehrfacher Aufruf für jeden einzelnen Teilstring ist möglich,
  115. *                aber durch die variable Argumentenliste eigentlich überflüssig,
  116. *                da man so auch alle Teilstrings auf einmal angeben kann.
  117. *
  118. *                Ein Beispiel für die Benutzung dieser Funktion finden Sie in
  119. *                der Datei »demo/AlertDemo.C«.
  120. *
  121. *   ACHTUNG:    Diese Funktion muß auch dann aufgerufen werden, wenn nur ein
  122. *    ¯¯¯¯¯¯¯¯    einziger Teilstring benutzt wird, da das Macro »DATEXT()«
  123. *                keine vollständige Initialisierung des gleichen vornimmt. Das
  124. *                wird alles erst durch »DAJOIN()« erledigt !!
  125. *
  126. * Siehe auch:    »DATEXT()«
  127. *«««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««*/
  128.  
  129. #ifdef __cplusplus
  130. extern "C" {
  131. #endif
  132.  
  133. VOID DAJOIN(UWORD Count, ...);
  134.  
  135. #ifdef __cplusplus
  136. }
  137. #endif
  138.  
  139. #endif    /* RHOSIGMA_SETTINGS_H */
  140.  
  141.